草庐IT

Java BufferedImage 内存消耗

全部标签

windows - 对大型内存映射文件的高效稀疏访问

我们有大型(例如700MB)文件中的图像数据。这些文件在Windows764位上进行内存映射。对图像数据的一些操作涉及我们从图像的每一行读取几个字节。这可能很慢——没有一行比一页大,所以即使我们只读取几个字节,我们也会为每一行得到一个页面错误。在我们当前的实现中,我们无法解决这个问题,但我们希望确保我们能够最大限度地利用磁盘系统。为了获得最佳性能,我们希望在处理当前行中的数据时提示VM系统获取下一行图像(可能导致页面错误)。这将使我们的处理和页面错误并行化。在Windows上似乎没有明显的方法来执行此操作!所以问题:在Windows7上是否有任何等效于madvise(MADV_WILL

c# - 正确使用 CryptoAPITransform?内存泄漏

我已将一段使用CryptoAPI的旧非托管代码移植到100%托管.NET代码。该代码使用了DES算法,由于多种原因不得不对其进行维护。由于从CreateDecryptor和CreateEncryptor方法获得的CryptoAPITransform实例被标记为可重用,我想只创建它们的实例并在需要时使用它们。看起来代码有效,但它导致了内存泄漏,所以决定每次都创建和处理一个实例。到目前为止它似乎没有泄漏,但我想知道我之前是否一直使用错误,如果是这样,我是否可以重用这些实例。该应用程序是多线程的,同时进行大量操作,因此可能存在线程问题,尽管我找不到任何异常或损坏的消息。此外,我的所有操作都是

windows - 在 gtk_widget_queue_draw 中 Windows 7 下 GTK 中的内存泄漏

下面的GTK程序:#includeGtkVBox*vbox;GtkWindow*win;gbooleanTimer(gpointeruser_data){gtk_widget_queue_draw(GTK_WIDGET(vbox));return1;}intmain(intargc,char**argv){gtk_init(&argc,&argv);win=(GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);vbox=(GtkVBox*)gtk_vbox_new(TRUE,1);gtk_container_add(GTK_CONTAINER(

ruby-on-rails - Rails guard 内存不足

我是Rails开发的新手,但我对guard有很大的疑问。我正在使用guard自动测试我的应用程序,但我不断收到以下错误消息[FATAL]failedtoallocatememory有人知道是什么原因造成的吗?我在Windows7x64机器上使用Ruby1.9.3和最新版本的guard。[编辑]在我删除wdmgem之后,似乎不再出现此错误。有什么想法吗? 最佳答案 我想出了答案,它被覆盖了here. 关于ruby-on-rails-Railsguard内存不足,我们在StackOverfl

Windows内核内存保护

Windows中每个进程的高端内存(0x80000000或0xc0000000)为内核代码保留,用户代码无法访问这些内存区域,如果尝试访问将抛出访问冲突异常。我想知道内核空间是如何保护的?是通过内存分段还是通过分页?我想听听技术解释。非常感谢,迈克尔。 最佳答案 假设您正在谈论x86和x64架构。内存保护是使用分页系统实现的。x86/x64CPU上的每个页表条目都有一个位来指示它是用户页还是主管页。只有使用CPLCPL是“当前特权级别”,有时也称为Ring。Windows仅使用两个环,尽管CPU实现了4个环。环0是Windows称为

为两个不同的进程创建共享内存

因此,我尝试在C程序中创建一个共享内存段,这样我就可以在其中写入一个简单的字符,然后从另一个C程序中读取该字符。我一直在尝试使用calloc()和malloc()但我相信这只适用于该程序自己的heap.是否有另一个函数可以做同样的事情,但在RAM内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了对所有进程可见的内存?提前致谢。编辑:-我正在使用Windows8。-语言不限于C,可以是任何其他语言。 最佳答案 有很多InterprocessCommunications当您需要在隔离的进程之间传输数据时,您可以选择。共享一bl

C++:查找内存映射文件的瓶颈

我有一个内存映射文件,我使用MemCpy从中获取数据。有时它快如闪电,有时却出奇地慢。例如:一次0.15毫秒,然后相同的操作6秒。我不确定瓶颈在哪里或如何解决。因此,我认为我需要做一些相当“深入”的分析,以找出究竟是什么导致MemCpy操作有时如此缓慢。有人可以建议我应该如何跟踪问题吗? 最佳答案 我想你可能想用VirtualLockLocksthespecifiedregionoftheprocess'svirtualaddressspaceintophysicalmemory,ensuringthatsubsequentacce

Windows 内存管理 : check if a page is in memory

在Windows中,有没有办法检查页面是在内存中还是在磁盘(交换空间)中?我想知道这一点的原因是,如果页面在磁盘中,则通过不访问该页面来避免导致页面错误。 最佳答案 据我所知,没有记录在案的方法可以在用户模式下完成此操作。也就是说,可以在内核模式下确定这一点,但这将涉及检查属于内存管理器的页表条目——这不是您在任何类型的生产代码中真正不想做的事情.您要解决的真正问题是什么? 关于Windows内存管理:checkifapageisinmemory,我们在StackOverflow上找到一

windows - VirtualProtect 如何改变内存保护标志

VirtualProtect的第三个参数可以使用如下标志:PAGE_EXECUTEPAGE_NOACCESSPAGE_READWRITEPAGE_READONLY...一开始我觉得VirtualProtect可以通过PTE的flag来实现。但是当我阅读PTE的结构时,我在PTE中找不到记录这个函数的第3个参数的标志。PTE的结构如下:抱歉,我无法发布图片(因为没有10个声誉!),您可以从Google找到它。我想找Windows在哪里记录了一个虚拟内存页的保护标志,不是PTE吗?看了一些资料,我发现当一个PTE无效时,PTE的字段的意思就变了!然后有5位保护标志。

c++ - 基于 Windows 的 C++ 应用程序随着时间的推移消耗更多的 CPU

我们在Windows上有一个基于C++的多线程应用程序,它使用WinPCAP库实时捕获网络数据包,然后处理这些数据包以监控网络。此应用程序旨在24x7全天候运行。我们的应用程序很容易消耗7-8GB的RAM。我们正在观察的问题:假设应用程序正在监控100Mbps的网络流量并消耗60%的CPU。我们观察到,当应用程序持续运行较长时间(如一两天)时,应用程序的CPU消耗会增加到70-80%,即使它仍在处理100Mbps的流量(做同样的工作量).我们尝试使用ProcessExplorer将此问题调试到线程级别,并注意到随着时间的推移,数据包捕获线程开始消耗更多的CPU。即使重新启动应用程序后,